/**
 * 这个文件是用来做权限拦截的，比如一个页面只允许superAdmin进，它就会拦截除了superAdmin之外的访问者
 */

import router from "./router";
import store from './store'
import Element from 'element-ui'

// 路由判断登录 根据路由配置文件的参数
router.beforeEach((to, from, next) => {
  const requireAuth = to.matched.some(record => record.meta.requireAuth)
  const accessible = to.matched.reduce((acc, record) => {  
    if (record.meta && record.meta.accessible) {  
      // accessible是一个数组，我们将其添加到累加器中  
      return [...acc, ...record.meta.accessible];  
    }  
    return acc;  
  }, []); 

  const isPublic = to.path==='/login'||to.path==='/404'// 如果为公共页面或不需要登录，就直达目的地
  const token = localStorage.getItem("token")// 登录判断
  const user = store.getters.getUser

  const params = {
    '1. requireAuth':requireAuth,
    '2. accessible':accessible,
    '3. isPublic':isPublic,
    '4. token':token,
    '5. user':user
  }

  // console.debug('permission.js的信息:', params)


  if(isPublic || !requireAuth) {
    next()
  } else if (!token) {
    Element.Message.error('请先登录！')
    next({path: '/login'})
  } else if (!user || !user.type) {
    Element.Message.error('请重新登录！')
    next({path: '/login'})
  } else if (user.type in accessible) {
    next()
  } else {
    Element.Message.error('暂无权限！')
    from() // 从哪来回哪去(即页面无跳转)
  }

})
